#include<bits/stdc++.h>
#include"utils.cpp" 
// #include"InputLibrary.cpp"
using namespace std;
typedef long long ll;

// 根据文件序号定制输入数据生成规则
// fileIndex 文件序号 0~9
int ip(int fileIndex) {
	
	/* 备用变量 */
	ll a, b, c, d,
		f, g, 
		k, l, m, n, 
		u, v, w, 
		x, y, z;

	ll t, t1, t2, t3;
	ll ma, mi;
	char c1, c2, c3;
	double d1, d2, d3;
	vector<ll> vi1, vi2, vi3;
	vector<char> vc1, vc2, vc3;
	/* 备用变量 */
	c1 = ' ';
	string s = "BWW", s1, s2;

	/* 固定的特例和边界最小值测试 - 固定的数据个数n的最小值、数值v的最小最大值 和 特例踩坑数据 */
	string as[] = {
		// "3 1\n3 2 1", "4 4\n1 1 1 1"
	}, as2[10010];
	
	if(fileIndex < sizeof(as)/sizeof(string))	cout << as[fileIndex];
	else	switch (fileIndex){
		/* 随机的特例和边界最小值测试 - 固定的数据个数n的最小值、数值v的最小最大值 和 特例踩坑数据 */
		// case 7:
		// 	break;
		case 8:
			n = ORI(50000, 50000, '\n');
			// ORIL(n, 0, 500, ' ', '\n');

			printf("%d ", 500);
			for(int i=1; i<=50000-2; i++)	printf("%d ", i%499);
			printf("%d\n", 500);

			n = ORI(50000, 50000, '\n');
			for(int i=0; i<50000; i++) {
				printf("1 50000\n");
			}

			break;
		/* 最大个数边界的随机数值测试 - 固定的个数最大值n，随机的大数值v */
		case 9:
			n = ORI(50000, 50000, '\n');
			// ORIL(n, 0, 500, ' ', '\n');

			printf("%d ", 500);
			for(int i=50000-2; i>=1; i--)	printf("%d ", i%499);
			printf("%d\n", 500);

			n = ORI(50000, 50000, '\n');
			for(int i=0; i<50000; i++) {
				printf("1 50000\n");
			}
			break;
		/* 普通测试 - 中小范围的随机数据 */
		default:
			n = ORI(3, 30, ' ');
			m = ORI(2, n/3, '\n');
			ORIL(n, 1, 100, ' ');
			break;
	}

	return 0;
}
